package cn.iocoder.yudao.module.scrm.service.business;

import java.util.*;
import javax.validation.*;

import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.scrm.controller.admin.business.vo.*;
import cn.iocoder.yudao.module.scrm.controller.admin.business.vo.business.BusinessDetailVO;
import cn.iocoder.yudao.module.scrm.controller.admin.business.vo.business.BusinessPageReqVO;
import cn.iocoder.yudao.module.scrm.controller.admin.business.vo.business.BusinessRespVO;
import cn.iocoder.yudao.module.scrm.controller.admin.business.vo.business.BusinessSaveReqVO;
import cn.iocoder.yudao.module.scrm.dal.dataobject.business.BusinessDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 商机 Service 接口
 *
 * @author admin
 */
public interface BusinessService {

    /**
     * 创建商机
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createBusiness(@Valid BusinessSaveReqVO createReqVO);

    /**
     * 更新商机
     *
     * @param updateReqVO 更新信息
     */
    void updateBusiness(@Valid BusinessSaveReqVO updateReqVO);

    /**
     * 删除商机
     *
     * @param id 编号
     */
    void deleteBusiness(Integer id);

    /**
     * 获得商机
     *
     * @param id 编号
     * @return 商机
     */
    BusinessDO getBusiness(Integer id);

    /**
     * 获得商机详情
     *
     * @param id 编号
     * @return 商机
     */
    BusinessDetailVO getBusinessDetail(Integer id,String tenantId);

    /**
     * 获得商机分页
     *
     * @param pageReqVO 分页查询
     * @return 商机分页
     */
    PageResult<BusinessRespVO> getBusinessPage(BusinessPageReqVO pageReqVO,Integer tenantId);

    /**
     * 导出的-获得商机分页-不使用代码的方式- 使用@DictFormat(SCRM_TRANSACTION_PROBABILITY) 字典注解进行转换
     *
     * @param pageReqVO 分页查询
     * @return 线索分页
     */
    PageResult<BusinessRespVO>  getBusinessPageExport(BusinessPageReqVO pageReqVO);
}